package com.bzkj.basicinfo.service.basic.impl;

import com.bzkj.basicinfo.domain.basic.WarehouseType;
import com.bzkj.basicinfo.mapper.WarehouseTypeMapper;
import com.bzkj.basicinfo.service.basic.WarehouseTypeService;
import com.bzkj.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 仓库类型Service业务层处理
 * 
 * @author bzkj
 */
@Service
public class WarehouseTypeServiceImpl implements WarehouseTypeService 
{
    @Autowired
    private WarehouseTypeMapper warehouseTypeMapper;

    /**
     * 查询仓库类型列表
     * 
     * @param warehouseType 仓库类型
     * @return 仓库类型
     */
    @Override
    public List<WarehouseType> selectWarehouseTypeList(WarehouseType warehouseType)
    {
        return warehouseTypeMapper.selectWarehouseTypeList(warehouseType);
    }

    /**
     * 查询所有启用的仓库类型
     * 
     * @return 仓库类型集合
     */
    @Override
    public List<WarehouseType> selectAllWarehouseTypes()
    {
        return warehouseTypeMapper.selectAllWarehouseTypes();
    }

    /**
     * 根据ID查询仓库类型
     * 
     * @param id 仓库类型ID
     * @return 仓库类型
     */
    @Override
    public WarehouseType selectWarehouseTypeById(Long id)
    {
        return warehouseTypeMapper.selectWarehouseTypeById(id);
    }

    /**
     * 新增仓库类型
     * 
     * @param warehouseType 仓库类型
     * @return 结果
     */
    @Override
    public int insertWarehouseType(WarehouseType warehouseType)
    {
        // 检查类型名称是否重复
        int count = warehouseTypeMapper.checkTypeNameUnique(warehouseType.getTypeName(), null);
        if (count > 0)
        {
            throw new RuntimeException("仓库类型名称已存在");
        }
        
        warehouseType.setCreateBy(SecurityUtils.getUsername());
        return warehouseTypeMapper.insertWarehouseType(warehouseType);
    }

    /**
     * 修改仓库类型
     * 
     * @param warehouseType 仓库类型
     * @return 结果
     */
    @Override
    public int updateWarehouseType(WarehouseType warehouseType)
    {
        // 检查类型名称是否重复
        int count = warehouseTypeMapper.checkTypeNameUnique(warehouseType.getTypeName(), warehouseType.getId());
        if (count > 0)
        {
            throw new RuntimeException("仓库类型名称已存在");
        }
        
        warehouseType.setUpdateBy(SecurityUtils.getUsername());
        return warehouseTypeMapper.updateWarehouseType(warehouseType);
    }

    /**
     * 删除仓库类型
     * 
     * @param id 仓库类型ID
     * @return 结果
     */
    @Override
    public int deleteWarehouseTypeById(Long id)
    {
        return warehouseTypeMapper.deleteWarehouseTypeById(id);
    }

    /**
     * 修改仓库类型状态
     * 
     * @param id 仓库类型ID
     * @param status 状态
     * @return 结果
     */
    @Override
    public int updateWarehouseTypeStatus(Long id, String status)
    {
        return warehouseTypeMapper.updateWarehouseTypeStatus(id, status);
    }
}
